前言
栈有两种实现方式:Stack 和 LinkedList,它们二者有什么区别呢?选择哪个效率更高呢?一探究竟。
试验
1 | import java.util.LinkedList; |
结论:
- LinkedList 和 Stack 的 add ,结果都是一样的
- LinkedList 和 Stack 的 push ,有区别
源码粗读
add
LinkedList
底层是双向链表,Stack
底层是数组,它们的 add
方法都是在末尾添加元素,前者尾插法,后者数组扩容
LinkedList
1 | public boolean add(E e) { |
Stack
1 | public synchronized boolean add(E e) { |
push
看源码得知,LinkedList
的 push
用的头插法,Stack
的 push
和 add
一样,都是数组扩容,从尾部添加
LinkedList
1 | public void push(E e) { |
Stack
1 | public E push(E item) { |